首页 > 试题广场 >

买卖股票的最好时机(二)

[编程题]买卖股票的最好时机(二)
  • 热度指数:2445 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益
1. 你可以多次买卖该只股票,但是再次购买前必须卖出之前的股票
2. 如果不能获取收益,请返回0
3. 假设买入卖出均无手续费

数据范围:
要求:空间复杂度 ,时间复杂度
进阶:空间复杂度 ,时间复杂度

输入描述:
第一行输入一个正整数 n ,表示数组 prices 的长度
第二行输入 n 个正整数,表示数组中prices的值


输出描述:
输出最大收益
示例1

输入

7
8 9 2 5 4 7 1

输出

7

说明

在第1天(股票价格=8)买入,第2天(股票价格=9)卖出,获利9-8=1
在第3天(股票价格=2)买入,第4天(股票价格=5)卖出,获利5-2=3
在第5天(股票价格=4)买入,第6天(股票价格=7)卖出,获利7-4=3
总获利1+3+3=7,返回7     
示例2

输入

5
5 4 3 2 1

输出

0

说明

由于每天股票都在跌,因此不进行任何交易最优。最大收益为0。          
示例3

输入

5
1 2 3 4 5

输出

4

说明

第一天买进,最后一天卖出最优。中间的当天买进当天卖出不影响最终结果。最大收益为4。              
let n = readline();
let arr = readline().split(' ').map(c => +c);
let ans = 0;
for(let i=1;i<arr.length;i++){
    if(arr[i]>arr[i-1]) ans += arr[i] - arr[i-1];
}
console.log(ans);

发表于 2022-08-23 15:08:07 回复(0)